<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //这种模式的基本思想是创建一个函数，
        //该函数的作用仅仅是封装创建对象的代码，
        //然后再返回新创建的对象；但从表面上看，这个函数又很像是典型的构造函数
        //第一种  就是工厂模式加了个new
        function Person(name,age){
            var o=new Object();
            o.name=name;
            o.age=age;
            o.sayName=function(){
                console.log(this.name);
            }
            return o;
        }
        //在这个例子中，Person 函数创建了一个新对象，并以相应的属性和方法初始化该对象，然后又返回了这个对象。除了使用new 操作符并把使用的包装函数叫做构造函数之外，这个模式跟工厂模式其实是一模一样的


        var app=new Person("哈哈",12);
        //第二种  没有return  就是工厂模式加了个new
        //可以不改变 原型直接创建新的 原生对象
        function Person1(name,age){
            var o=new Object();
            o.name=name;
            o.age=age;
            o.sayName=function(){
                console.log(this.name);
            }
            // return o;
        }
        var app1=new Person1("哈哈",12);


    </script>
</body>
</html>